home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
latex209
/
contrib
/
tengtex
/
tengtex.sty
< prev
next >
Wrap
Text File
|
1994-10-02
|
27KB
|
890 lines
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% tengtex.sty (TengTeX for LaTeX)
% 22 September 1994
% Version 1.00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ivan A Derzhanski
% Centre for Cognitive Science
% University of Edinburgh
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def \TengTeX {T\ama@tehta {\char19}{\~g}\TeX }
%%%%%%%%%%%%%%%%%%%%%%%%%%% fount selection %%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif \if@nofount
\def \@jcb{\jcb} \def \@mpu{\mpu}
\def \mere@tengwanda{%
\loop
\ifx \@tengwanda \undefined
\message{Choose a tengwar fount (\string\jcb\space or \string\mpu): }%
\read-1 to\@answer
\ifx \@answer \@jcb \jcb \else \ifx \@answer \@mpu \mpu%
\else \message{None of these Orkish jokes, please.^^J}\fi\fi
\repeat}
%%%%%%%%%%%%% character definitions common to both founts %%%%%%%%%%%%%
\def\l@p#1#2{\setbox0=\hbox{#2}\ooalign{\box0\crcr\hidewidth#1\hidewidth}}%
\chardef \tanta@Oman="80
\chardef \@tinco=`t \chardef \@TUle=`T \chardef \@Ore=`R
\chardef \@ando=`d \chardef \@anto=`D \chardef \@nUmen=`n
\chardef \@parma=`p \chardef \@formen=`f \chardef \@vala=`w
\chardef \@umbar=`b \chardef \@ampa=`v \chardef \@malta=`m
\chardef \@quesse=`k \chardef \@hwesta=`K \chardef \@Noldo=`Y
\chardef \@ungwe=`g \chardef \@unque=`G \chardef \@Nwalme=`N
\chardef \@lambe=`l \chardef \@alda=`L \chardef \@rOmen=`r
\chardef \@anga=`j \chardef \@silme=`s \chardef \@esse=`z
\chardef \@quessiEva="80 % Quenya: _q_ expecting _u_
\chardef \@unquiEva="81 % Quenya: _nq_ expecting _u_
\chardef \@phormen="82 % Sindarin: _ph_
\chardef \i@iEva="83 % Beleriandic Sindarin: sentence-initial _i_
%%%%%%%%%%%%%%%%%%%%% Julian Bradfield's tengwar %%%%%%%%%%%%%%%%%%%%%
\def \jcb{\globaldefs=1%
\font \jcb@tengwar=teng10\let \@tengwanda \jcb@tengwar
\hyphenchar\jcb@tengwar=-1 % hyphenation in tengwar suppressed
\emergencystretch=2em % but we can do some extra stretching
%
\chardef \a@tehta=`a
\chardef \e@tehta=`e \let \@E@tehta \tanta@Oman
\chardef \i@tehta=`i
\chardef \o@tehta=`o \let \@O@tehta \tanta@Oman
\chardef \u@tehta=`u \let \@U@tehta \tanta@Oman
%
\def \E@tehta {e\kern-.15eme}%
\def \O@tehta {o\kern-.25emo}%
\def \U@tehta {u\kern-.35emu}%
%
\chardef \sinta@kolindo=`@
\chardef \anda@kolindo=`*
%
\chardef \@calma=`c
\chardef \@Harma=`C \chardef \@anna=`y
\chardef \@anca=`J \chardef \@wilya=`W
%
\chardef \@arda=`\& \chardef \@hyarmen=`h
\chardef \@silme@nuquerna=`S \chardef \@esse@nuquerna=`Z
\chardef \@yanta=`I \chardef \@Ure=`U
\chardef \@hwesta@sindarinwa=`H
\chardef \@halla=`|
%
\def \uOman@tehta ##1##2{% no following vowel
\ifx ##2\@lambe {\l@p {\raise.5ex\hbox{^^E}}{##1}}\else {\l@p ^^E{##1}}\fi}%
%
\def \T@nun@tehta ##1{{\l@p ^^B{##1}}}% doubling a narrow tengwa
\let \D@nun@tehta \T@nun@tehta % doubling a wide tengwa
\def \L@nun@tehta ##1{##1\raise.75ex\hbox to 0pt{\hss^^B}}% doubling _l_
%
\def \y@nun@tehta ##1{{\l@p ^^Y{##1}}}% _y_ following something
\def \l@nun@tehta ##1{##1\raise.75ex\hbox to 0pt{\hss^^Y}}% _y_ following _l_
\def \r@nun@tehta ##1{\raise.2ex\hbox to 0pt{^^Y\hss}##1}% _y_ following _r_
%
\def \s@nun@tehta ##1{##1\kern-0.3em^^T}% _s_ following something
\def \x@nun@tehta ##1{##1\kern-0.05em^^T}% _s_ following _c_ or _l_
%
\chardef \y@tehta="22
%
\chardef \arka@ama@falma="0F % prenasalisation for a narrow tengwa
\chardef \landa@ama@falma="0F % prenasalisation for a wide tengwa
\chardef \w@tehta="16
%
\chardef \a@tengwa=`A \chardef \o@tengwa=`y \chardef \y@tengwa=`S
%
\chardef \@andaith=`e
%
\globaldefs=0}
%%%%%%%%%%%%%%%%%%%%%%% Michael Urban's tengwar %%%%%%%%%%%%%%%%%%%%%%%
\def \mpu{\globaldefs=1%
\font \mpu@tengwar=tengwar\global \let \@tengwanda \mpu@tengwar
\hyphenchar\mpu@tengwar=-1 % hyphenation in tengwar suppressed
\emergencystretch=2em % but we can do some extra stretching
%
\chardef \a@tehta="5E
\chardef \e@tehta="13
\chardef \i@tehta="5F
\chardef \o@tehta="14
\chardef \u@tehta="15
\chardef \E@tehta="7D
\chardef \O@tehta="16
\chardef \U@tehta="17
%
\chardef \sinta@kolindo=`i
\chardef \anda@kolindo="10
%
\chardef \@calma=`C \chardef \@Harma=`S \chardef \@anna=`O
\chardef \@anca=`Z \chardef \@wilya=`A
%
\chardef \@arda="12 \chardef \@hyarmen=`h
\chardef \@silme@nuquerna="03 \chardef \@esse@nuquerna="1A
\chardef \@yanta=`e \chardef \@Ure=`u
\chardef \@hwesta@sindarinwa="0F
\chardef \@halla="11
%
\def \uOman@tehta ##1##2{\l@p ^^Y{##1}}% no following vowel
%
\def \T@nun@tehta ##1{\l@p ^^H{##1}}% doubling a narrow tengwa
\def \D@nun@tehta ##1{\l@p {\char9}{##1}}% doubling a wide tengwa
\def \L@nun@tehta ##1{##1\llap ^^H}% doubling lambe
%
\def \y@nun@tehta ##1{\l@p ^^X{##1}}% _y_ following something
\let \l@nun@tehta \y@nun@tehta
\def \r@nun@tehta ##1{##1\lower.2ex\hbox to1.5pt{\hss^^X}}% _y_ following _r_
%
\def \s@nun@tehta ##1{##1\kern-0.3em\char28}% _s_ following something
\def \x@nun@tehta ##1{##1\kern-0.05em\char28}% _s_ following _c_ or _l_
%\def \s@nun@tehta ##1{##1\lower1.5ex\hbox to3pt{\hss^^U}}% _s_ after something
%\def \x@nun@tehta ##1{##1\lower1.5ex\hbox to3pt{\hss^^U}}% _s_ after _c_ or _l_
%
\chardef \y@tehta="7F
%
\chardef \arka@ama@falma="0A % prenasalisation for a narrow tengwa
\chardef \landa@ama@falma="0B % prenasalisation for a wide tengwa
\chardef \w@tehta="1E
%\def\w@tehta##1{##1\raise .9ex\hbox to 0pt{\hss\char"2D}}
%
\chardef \a@tengwa=`a \chardef \o@tengwa=`o \chardef \y@tengwa=`y
%
\chardef \@andaith="13
%
\globaldefs=0}
%%%%%%%%%%%%%%%% macro definitions common to all modes %%%%%%%%%%%%%%%%
\long \def \kara@Ukerta #1{%
\ifcase \nato@nostale \or \quetto@metta \or \m@m \fi
\ifx \@sptoken \hilde@kerta \space \fi
#1\nato@nostale=0}
\newcount \nato@nostale % class of input token
% 0: waiting, 1: word, 2: number
\long \def \tUva@kerta #1{%
\ifx #1\end\relax
\ifcase \nato@nostale \or \quetto@metta \or \m@m \fi
\let \next \end
\else \ifcat z\noexpand#1\relax
\ifnum 1=\nato@nostale
\ifx \@sptoken \hilde@kerta
\quetto@metta \space \vinya@quetta
\fi
\else
\ifnum 2=\nato@nostale \m@m \fi
\ifx \@sptoken \hilde@kerta \space \fi
\vinya@quetta
\fi
\expandafter \kara@kerta \m@m >#1%
\nato@nostale=1%
\else \ifcat .\noexpand#1\relax
\chardef \@ch=`#1\relax
\ifnum \@ch<48 \kara@Ukerta #1%
\else \ifnum \@ch<58
\ifnum 2=\nato@nostale
\ifx \@sptoken \hilde@kerta
\m@m \space \def \m@m {}%
\fi
\else
\ifnum 1=\nato@nostale \quetto@metta \fi
\ifx \@sptoken \hilde@kerta \space \fi
\def \m@m {}%
\fi
\edef \m@m {#1\m@m}%
\nato@nostale=2%
\else \kara@Ukerta #1%
\fi\fi
\else \kara@Ukerta #1%
\fi\fi
\def \next {\futurelet \hilde@kerta \tUva@kerta}%
\fi
\next}
\def \elvish {% Elvish environment
\mere@tengwanda%
\@tengwanda%
\nato@nostale=0%
\tUva@kerta }
\def \endelvish {}
\def \quetta #1{\begin{elvish}#1 \end{elvish}} % short quotation
\def \ama@tehta #1#2{% allocate superscript tehta
\leavevmode \vbox \bgroup
\baselineskip 0pt\lineskip 0pt%
\halign {\hss ##\unskip \hss \cr #1\vadjust {\vskip -1ex}\cr #2\cr }%
\egroup }
\def \Oman@tengwa #1#2{% put vowel tehta over tengwa, inverting silme and esse
\ifx #1\@silme \@Oman@tengwa #2\@silme@nuquerna
\else \ifx #1\@esse \@Oman@tengwa #2\@esse@nuquerna
\else \@Oman@tengwa #2#1%
\fi\fi}
\def \@Oman@tengwa #1#2{% put vowel tehta over tengwa
\expandafter \ifx \csname @#1@tehta\endcsname \tanta@Oman
\expandafter \ama@tehta \csname #1@tehta\endcsname #2%
\else \expandafter \accent \csname #1@tehta\endcsname #2\fi}
\def \tehta@tengwa #1#2{% put consonant tehta over tengwa,
% inverting silme and esse
\ifx #1\@silme \accent #2\@silme@nuquerna
\else \ifx #1\@esse \accent #2\@esse@nuquerna
\else \accent #2#1%
\fi\fi}
\def \nun@tehta #1#2{% allocate subscript consonant tehta
\ifx #2:#1\else \expandafter \csname #2@nun@tehta\endcsname {#1}\fi}
%%%%%%%%%%%%%%%%%%%% macro definitions for Quenya %%%%%%%%%%%%%%%%%%%%
\newif \if@light
\let \heavyvocalise \@lightfalse
\let \lightvocalise \@lighttrue
\def \quenya {%
\let \kara@kerta \q@kerta
\def \vinya@quetta {\def \m@m {\sinta@kolindo ::}}%
\def \quetto@metta {\expandafter \@@teka \m@m>}}
\def \@@teka #1#2#3#4>{%
\ifx #1\sinta@kolindo \ifx #3:\ifx \relax #4\relax \else \@teka #4<>\fi
\else \@teka #4#1#2#3<>\fi \else \@teka #4#1#2#3<>\fi}
\def \@teka #1#2#3#4#5>{%
\ifx #3:%
\ifx #1\@halla \@halla
\else \ifx #4\anda@kolindo \nun@tehta #1#2%
\else \ifx #4\@yanta \nun@tehta #1#2%
\else \ifx #4\@Ure \nun@tehta #1#2%
\else
\def \q@c@n {\ifx #1\@rOmen \@Ore \else #1\fi}%
\if@light \expandafter \uOman@tehta {\nun@tehta \q@c@n #2}#1%
\else \nun@tehta \q@c@n #2\fi
\fi\fi\fi\fi
\else \ifx #1\@rOmen
\ifx #2s\s@nun@tehta {\q@c@v \@Ore #3}%
\else \nun@tehta {\q@c@v \@rOmen #3}#2%
\fi
\else \ifx #1\@quessiEva \nun@tehta {\q@c@v \@quesse #3}#2%
\else \ifx #1\@unquiEva \nun@tehta {\q@c@v \@unque #3}#2%
\else \nun@tehta {\q@c@v #1#3}#2%
\fi\fi\fi\fi
\ifx <#4\let \next \relax \else \def \next {\@teka #4#5>}\fi
\next}
\def \q@c@v #1#2{% choosing whether to use vowel tehta
% depending on vocalisation
\ifx #2a\if@light #1\else \Oman@tengwa #1a\fi
\else \Oman@tengwa #1#2%
\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%% Quenya scanner %%%%%%%%%%%%%%%%%%%%%%%%%%%
\def \q@kerta #1>#2{%
\ifcat #2a\csname #2@q\endcsname #1>%
\else \ifcat #2.\expandafter \@@teka \m@m>#2\def \m@m {\sinta@kolindo ::}%
\fi\fi}
\def \a@q #1#2#3#4>{%
\ifx #3:\def \m@m {#1#2a#4}%
\else \def \m@m {\sinta@kolindo :a#4#1#2#3}%
\fi}
\def \e@q #1>{\q@quanta@Oman #1>eE}
\def \o@q #1>{\q@quanta@Oman #1>oO}
\def \q@quanta@Oman #1#2#3#4>#5#6{%
\ifx #3:\def \m@m {#1#2#5#4}%
\else \ifx #3#5\def \m@m {#1#2#6#4}%
\else \def \m@m {\sinta@kolindo :#5#4#1#2#3}%
\fi\fi}
\def \i@q #1#2#3#4>{%
\ifx #3:\def \m@m {#1#2i#4}%
\else
\edef \m@m {%
\sinta@kolindo ::#4\ifx #1\sinta@kolindo \else #1::\fi \@yanta :#3}%
\fi}
\def \u@q #1#2#3#4>{%
\ifx #3:%
\ifx #1\@quessiEva \def \m@m {\@quesse #2#3#4}%
\else \ifx #1\@unquiEva \def \m@m {\@unque #2#3#4}%
\else \def \m@m {#1#2u#4}%
\fi\fi
\else \ifx #3u\def \m@m {#1#2U#4}%
\else
\edef \m@m
{\sinta@kolindo ::#4\ifx #1\sinta@kolindo \else #1::\fi \@Ure :#3}%
\fi\fi}
\def \A@q #1>{\q@anda@Oman #1>a}
\def \E@q #1>{\q@anda@Oman #1>e}
\def \I@q #1>{\q@anda@Oman #1>i}
\def \O@q #1>{\q@anda@Oman #1>o}
\def \U@q #1>{\q@anda@Oman #1>u}
\def \q@anda@Oman #1#2#3#4>#5{%
\edef \m@m
{\sinta@kolindo ::#4%
\ifx #1\sinta@kolindo
\ifx #3:\else ::#3\fi
\else #1#2#3\fi \anda@kolindo :#5}}
\def \b@q #1#2#3#4>{\edef \m@m {\@umbar ::#4\ifx #1\@lambe l::\fi}}
\def \d@q #1#2#3#4>{%
\edef \m@m
{\ifx #1\@lambe \@alda
\else \ifx #1\@rOmen \@arda
\else \@ando \fi\fi ::#4}}
\def \g@q #1#2#3#4>{\def \m@m {\@anga ::#4}}
\def \h@q #1#2#3#4>{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {\@hyarmen ::#4}%
\else \edef \m@m {\@hyarmen ::#4#1::}%
\fi
\else \def \m@m {\hyarmen ::#4#1#2#3}%
\fi}
\def \f@q #1>{\q@Upunta #1>\@formen T}
\def \G@q #1>{\q@Upunta #1>\@anna T}
\def \H@q #1>{\q@Upunta #1>\@Harma T}
\def \l@q #1>{\q@Upunta #1>\@lambe L}
\def \m@q #1>{\q@Upunta #1>\@malta D}
\def \n@q #1>{\q@Upunta #1>\@nUmen D}
\def \N@q #1>{\q@Upunta #1>\@Noldo D}
\def \r@q #1>{\q@Upunta #1>\@rOmen T}
\def \R@q #1>{\q@Upunta #1>\@Ore T}
\def \S@q #1>{\q@Upunta #1>\@TUle T}
\def \v@q #1>{\q@Upunta #1>\@vala T}
\def \z@q #1>{\q@Upunta #1>\@esse T}
\def \q@Upunta #1#2#3#4>#5#6{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {#5::#4}%
\else \ifx #1#5\def \m@m {#5#6:#4}%
\else \edef \m@m {#5::#4\ifx #1\@hyarmen \@halla \else #1\fi ::}%
\fi\fi
\else \def \m@m {#5::#4#1#2#3}%
\fi}
\def \s@q #1#2#3#4>{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {\@silme ::#4}%
\else \ifx #1\@silme \def \m@m {\@esse ::#4}%
\else
\edef \m@m
{#1\ifx #1\@calma x\else \ifx #1\@lambe x\else s\fi\fi :#4}%
\fi\fi
\else \def \m@m {\@silme ::#4#1#2#3}%
\fi}
\def \w@q #1#2#3#4>{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {\@wilya ::#4}%
\else \ifx #1\@anga \def \m@m {\@ungwe ::#4}%
\else \ifx #1\@harma \def \m@m {\@hwesta ::#4}%
\else \ifx #1\@hyarmen \def \m@m {\@hwesta ::#4}%
\else \ifx #1\@Noldo \def \m@m {\@Nwalme ::#4}%
\else \def \m@m {\@wilya ::#4#1::}%
\fi\fi\fi\fi\fi
\else \def \m@m {\@wilya ::#4#1#2#3}%
\fi}
\def \x@q #1#2#3#4>{%
\edef \m@m{%
\@calma x:#4%
\ifx #3:\ifx #1\sinta@kolindo \else #1::\fi\else #1#2#3\fi }}
\def \y@q #1#2#3#4>{%
\ifx #3:%
\edef \m@m {%
\ifx #1\sinta@kolindo \@anna \else #1\fi
\ifx #1\@rOmen r\else \ifx #1\@lambe l\else y\fi\fi :#4}%
\else \def \m@m {\@anna y:#4#1#2#3}%
\fi}
\def \c@q #1>{\q@punta #1>\@calma \@nUmen \@anca}
\let \k@q \c@q
\def \p@q #1>{\q@punta #1>\@parma \@malta \@ampa}
\def \q@q #1>{\q@punta #1>\@quessiEva \@nUmen \@unquiEva}
\def \q@punta #1#2#3#4>#5#6#7{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {#5::#4}%
\else \ifx #1#5\def \m@m {#5T:#4}%
\else \ifx #1#6\def \m@m {#7::#4}%
\else \def \m@m {#5::#4#1::}%
\fi\fi\fi
\else \def \m@m {#5::#4#1#2#3}%
\fi}
\def \t@q #1#2#3#4>{%
\ifx #3:%
\ifx #1\sinta@kolindo \def \m@m {\@tinco ::#4}%
\else \ifx #1\@hyarmen \def \m@m {\@tinco ::#4\@Harma ::}%
\else \ifx #1\@tinco \def \m@m {\@tinco T:#4}%
\else \ifx #1\@nUmen \def \m@m {\@anto ::#4}%
\else \def \m@m {\@tinco ::#4#1::}%
\fi\fi\fi\fi
\else \def \m@m {\@tinco ::#4#1#2#3}%
\fi}
%%%%%%%%%%%%%%%%%%% macro definitions for Sindarin %%%%%%%%%%%%%%%%%%%
\def \oright {\def \o@sind {o}\def \u@sind {u}\def \O@sind {O}\def \U@sind {U}}
\def \oleft {\def \o@sind {u}\def \u@sind {o}\def \O@sind {U}\def \U@sind {O}}
\newif \if@ninOre
\def \ninnUmen {%
\@ninOrefalse
\let \n@sind \@nUmen \let \m@sind \@malta \def \n@gem {N}}
\def \ninOre {%
\@ninOretrue
\let \n@sind \@Ore \let \m@sind \@vala \def \n@gem {:}}
\def \vinquesse{% use only the quessetEma
\let \c@sind \@quesse \let \k@sind \@quesse \let \g@sind \@ungwe
\let \ch@sind \@hwesta \let \kh@sind \@hwesta \let \gh@sind \@unque
\let \N@sind \@Nwalme}
\def \vaswestron{% use both the calmatEma and the quessetEma
\let \c@sind \@calma \let \k@sind \@quesse \let \g@sind \@ungwe
\let \ch@sind \@hwesta \let \kh@sind \@hwesta \let \gh@sind \@unque
\let \N@sind \@Nwalme}
\def \vincalma{% use only the calmatEma
\let \c@sind \@calma \let \k@sind \@calma \let \g@sind \@anga
\let \ch@sind \@Harma \let \kh@sind \@Harma \let \gh@sind \@anca
\let \N@sind \@Noldo}
\def \sindarin {%
\let \kara@kerta \s@kerta
\oright \ninnUmen \vinquesse
\def \vinya@quetta {\def \m@m {::\sinta@kolindo :}}%
\def \quetto@metta {\expandafter \@@teitho \m@m>}}
\def \@@teitho #1#2#3#4#5>{%
\ifx #1:\ifx #3\sinta@kolindo \ifx \relax #5\relax \else \@teithoi #5<>\fi
\else \@teithoi #5#1#2#3#4<>\fi \else \@teithoi #5#1#2#3#4<>\fi}
\def \@teithoi #1#2#3#4#5#6>{%
\ifx #3\@phormen
\ifx #5<\s@v@t@c@t #1#2\@formen #4%
\else \ifx #1:\s@v@t@c@t #1#2\@formen #4%
\else \s@v@t@c@t #1#2\@formen T%
\fi\fi
\else \ifx #3\sinta@kolindo
\ifx #5<\@Oman@tengwa #1\sinta@kolindo
\else \ifx #1i\@yanta
\else \@Oman@tengwa #1\sinta@kolindo
\fi\fi
\else \@teithoo #1#2#3#4#5%
\fi\fi
\ifx <#5\let \next \relax \else \def \next {\@teithoii #5#6>}\fi
\next}
\def \@teithoii #1#2#3#4#5#6>{%
\ifx #3\@phormen
\ifx #5<\s@v@t@c@t #1#2\@formen #4\else \s@v@t@c@t #1#2\@formen T\fi
\else \@teithoo #1#2#3#4#5%
\fi
\ifx <#5\let \next \relax \else \def \next {\@teithoii #5#6>}\fi
\next}
\def \@teithoo #1#2#3#4#5{%
\ifx #3\@formen
\ifx #5<\s@v@t@c@t #1#2\@ampa #4\else \s@v@t@c@t #1#2\@formen #4\fi
\else \ifx #3\@rOmen
\if@ninOre
\s@v@t@c@t #1#2#3#4%
\else
\ifx #5<\s@v@t@c@t #1#2\@Ore #4%
\else \s@v@t@c@t #1#2\@rOmen #4%
\fi
\fi
\else \s@v@t@c@t #1#2#3#4%
\fi\fi}
\def \s@v@t@c@t #1#2#3#4{%
\nun@tehta {%
\ifx #1:\ifx #2:#3%
\else \tehta@tengwa #3#2%
\fi
\else\ifx #2:\Oman@tengwa #3#1%
\else
\expandafter \ama@tehta \csname #1@tehta\endcsname
{\tehta@tengwa #3#2}%
\fi
\fi}%
#4}
%%%%%%%%%%%%%%%%%%%%%%%%%% Sindarin scanner %%%%%%%%%%%%%%%%%%%%%%%%%%
\def \s@kerta #1>#2{%
\ifcat #2a\csname #2@s\endcsname #1>%
\else \ifcat #2.%
\expandafter \@@teitho \m@m>#2\def \m@m {::\sinta@kolindo :}%
\fi\fi}
\def \a@s #1>{\s@quanta@Oman #1>a}
\def \y@s #1>{\s@quanta@Oman #1>y}
\def \s@quanta@Oman #1#2#3#4#5>#6{%
\ifx #3\sinta@kolindo
\edef \m@m {#6:\sinta@kolindo :#5\ifx #1:\else #1:\sinta@kolindo :\fi}%
\else \def \m@m {#6:\sinta@kolindo :#5#1#2#3#4}%
\fi}
\def \e@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo
\ifx #1a\def \m@m {::\sinta@kolindo :#5a:\@yanta :}%
\else \ifx #1o\def \m@m {::\sinta@kolindo :#5o:\@yanta :}%
\else \ifx #1e\def \m@m {E:\sinta@kolindo :#5}%
\else
\edef \m@m {e:\sinta@kolindo :#5\ifx #1:\else #1:\sinta@kolindo :\fi}%
\fi\fi\fi
\else \def \m@m {e:\sinta@kolindo :#5#1#2#3#4}%
\fi}
\def \i@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo
\ifx #1:\def \m@m {i:\sinta@kolindo :#5}%
\else \def \m@m{::\sinta@kolindo :#5#1:\@anna :}%
\fi
\else \def \m@m {i:\sinta@kolindo :#5#1#2#3#4}%
\fi}
\def \o@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo
\ifx #1\o@sind \edef \m@m {\O@sind:\sinta@kolindo :#5}%
\else
\edef \m@m
{\o@sind :\sinta@kolindo :#5\ifx #1:\else #1:\sinta@kolindo :\fi}%
\fi
\else \edef \m@m {\o@sind :\sinta@kolindo :#5#1#2#3#4}%
\fi}
\def \u@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo
\ifx #1:\def \m@m {\u@sind :\sinta@kolindo :#5}%
\else \ifx #1\u@sind \edef \m@m {\U@sind:\sinta@kolindo :#5}%
\else \def \m@m{::\sinta@kolindo :#5#1:\@Ure :}%
\fi\fi
\else \def \m@m {\u@sind :\sinta@kolindo :#5#1#2#3#4}%
\fi}
\def \A@s #1>{\s@anda@Oman #1>a}
\def \E@s #1>{\s@anda@Oman #1>e}
\def \I@s #1>{\s@anda@Oman #1>i}
\def \O@s #1>{\s@anda@Oman #1>o}
\def \U@s #1>{\s@anda@Oman #1>u}
\def \Y@s #1>{\s@anda@Oman #1>y}
\def \s@anda@Oman #1#2#3#4#5>#6{%
\edef \m@m
{::\sinta@kolindo :#5%
\ifx #1:\ifx #3\sinta@kolindo \else :#2#3:\fi \else #1#2#3#4\fi
#6:\anda@kolindo :}}
\def \f@s #1>{\s@surya #1>\@formen T}
\def \l@s #1>{\s@surya #1>\@lambe L}
\def \r@s #1>{\s@surya #1>\@rOmen T}
\def \R@s #1>{\if@ninOre \s@surya #1>\@rOmen T\else \s@surya #1>\@Ore T\fi}
\def \v@s #1>{\s@surya #1>\@ampa D}
\def \s@surya #1#2#3#4#5>#6#7{%
\ifx #3\sinta@kolindo \def \m@m {#1:#6:#5}%
\else \ifx #3#6\def \m@m {#1#2#6#7#5}%
\else \def \m@m {::#6:#5#1#2#3#4}%
\fi\fi}
\def \b@s #1>{\s@punta #1>\@umbar \m@sind \landa@ama@falma D}
\def \c@s #1>{\s@punta #1>\c@sind \n@sind \arka@ama@falma T}
\def \d@s #1>{\s@punta #1>\@ando \n@sind \landa@ama@falma D}
\def \g@s #1>{\s@punta #1>\g@sind \n@sind \landa@ama@falma D}
\def \j@s #1>{\s@punta #1>\@anca \n@sind \landa@ama@falma D}
\def \k@s #1>{\s@punta #1>\k@sind \n@sind \arka@ama@falma T}
\def \p@s #1>{\s@punta #1>\@parma \m@sind \arka@ama@falma T}
\def \t@s #1>{\s@punta #1>\@tinco \n@sind \arka@ama@falma T}
\def \s@punta #1#2#3#4#5>#6#7#8#9{%
\ifx #3\sinta@kolindo \def \m@m {#1:#6:#5}%
\else \ifx #3#6\def \m@m {#1#2#6#9#5}%
\else \ifx #3#7\def \m@m {#1#8#6:#5}%
\else \def \m@m {::#6:#5#1#2#3#4}%
\fi\fi\fi}
\def \m@s #1>{\s@nengwea #1>\m@sind \@malta }
\def \n@s #1>{\s@nengwea #1>\n@sind \@nUmen }
\def \s@nengwea #1#2#3#4#5>#6#7{%
\ifx #3\sinta@kolindo \def \m@m {#1:#6:#5}%
\else \ifx #3#6\edef \m@m {#1\if@ninOre :\else \landa@ama@falma \fi #7:#5}%
\else \def \m@m {::#6:#5#1#2#3#4}%
\fi\fi}
\def \N@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\N@sind :#5}%
\else \ifx #3\N@sind \edef \m@m {#1\landa@ama@falma \N@sind :#5}%
\else \def \m@m {::\N@sind :#5#1#2#3#4}%
\fi\fi}
\def \h@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\@hyarmen :#5}%
\else \ifx #3\@tinco \def \m@m {#1#2\@TUle :#5}%
\else \ifx #3\@ando \def \m@m {#1#2\@anto :#5}%
\else \ifx #3\@parma \def \m@m {#1#2\@phormen :#5}%
\else \ifx #3\@umbar \def \m@m {#1#2\@ampa :#5}%
\else \ifx #3\@malta \def \m@m {#1\landa@ama@falma \@ampa :#5}%
\else \ifx #3\c@sind \def \m@m {#1#2\ch@sind :#5}%
\else \ifx #3\g@sind \def \m@m {#1#2\gh@sind :#5}%
\else \ifx #3\@lambe \def \m@m {#1#2\@alda :#5}%
\else \ifx #3\@rOmen \def \m@m {#1#2\@arda :#5}%
\else \ifx #3\@silme \def \m@m {#1#2\@Harma :#5}%
\else \ifx #3\@esse \def \m@m {#1#2\@anca :#5}%
\else \def \m@m {::\@hyarmen :#5#1#2#3#4}%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
\def \H@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\@hyarmen :#5}%
\else \def \m@m {::\@hyarmen :#5#1#2#3:}%
\fi}
\def \s@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\@silme :#5}%
\else \ifx #3\@silme \def \m@m {#1#2\@esse :#5}%
\else \def \m@m {#1#2#3s#5}%
\fi\fi}
\def \w@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\@wilya :#5}%
\else \ifx #3\@hyarmen \def \m@m {#1#2\@hwesta@sindarinwa :#5}%
\else \ifx #2:\def \m@m {#1\w@tehta #3:#5}%
\else \def \m@m {::\@wilya :#5#1#2#3:}%
\fi\fi\fi}
\def \z@s #1#2#3#4#5>{%
\ifx #3\sinta@kolindo \def \m@m {#1:\@esse :#5}%
\else \def \m@m {::\@esse :#5#1#2#3:}%
\fi}
%%%%%%%%%%%%%%%%%% macro definitions for Beleriandic %%%%%%%%%%%%%%%%%%
\newif \ifsinta@Oman % short vowel just read
\newif \if@thegra % first letter of a word
\def \beleriand {%
\let \kara@kerta \b@kerta
\ninOre \vincalma
\def \vinya@quetta {\def \m@m {:::}\sinta@Omanfalse \@thegratrue }%
\def \quetto@metta {\expandafter \tEw@mhedui \m@m }}
\def \@garo #1{\def \m@m {#1}\@thegrafalse }
\def \@teitho #1#2#3>{%
\ifx #2:%
\else \ifx #2\@phormen
\if@thegra \b@t@c@t #1\@formen#3\else \b@t@c@t #1\@formen T\fi
\else \ifx #2\i@iEva
\b@t@c@t #1\sinta@kolindo#3%
\else \b@t@c@t #1#2#3%
\fi\fi\fi }
\def \@teithov #1#2#3>{%
\ifx #2\i@iEva \anda@kolindo\else \@teitho #1#2#3>\fi }
\def \tEw@mhedui #1#2#3{%
\ifx #2\i@iEva \sinta@kolindo
\else \ifx #2\@formen \b@t@c@t #1\@ampa #3%
\else \ifx #2\@phormen \b@t@c@t #1\@formen#3%
\else \ifx #2\@rOmen%
\if@ninOre \b@t@c@t #1\@rOmen #3\else \b@t@c@t #1\@Ore #3\fi
\else \b@t@c@t #1#2#3%
\fi\fi\fi\fi }
\def \b@t@c@t #1#2#3{%
\nun@tehta {\ifx #1:#2\else \tehta@tengwa #2#1\fi }#3}
%%%%%%%%%%%%%%%%%%%%%%%%% Beleriandic scanner %%%%%%%%%%%%%%%%%%%%%%%%%
\def \b@kerta #1>#2{%
\ifcat #2a\csname #2@b\endcsname #1>%
\else \ifcat #2.\m@m
\fi\fi }
\def \a@b #1>{\b@quanta@Oman #1>\a@tengwa }
\def \y@b #1>{\b@quanta@Oman #1>\y@tengwa }
\def \b@quanta@Oman #1#2#3>#4{%
\ifx #2:\else \@teithov #1#2#3>\fi
\@garo {:#4:}\sinta@Omantrue }
\def \e@b #1>{\b@tanta@Oman #1>\@yanta }
\def \o@b #1>{\b@tanta@Oman #1>\o@tengwa }
\def \b@tanta@Oman #1#2#3>#4{%
\ifx #2#4\@garo {\@andaith #4:}\sinta@Omanfalse
\else
\ifx #2:\else \@teithov #1#2#3>\fi
\@garo {:#4:}\sinta@Omantrue
\fi}
\def \i@b #1>{%
\if@thegra \b@per@Oman #1>\i@iEva \y@tehta
\else \b@per@Oman #1>\sinta@kolindo \y@tehta
\fi }
\def \u@b #1#2#3>{%
\ifx #2\@Ure \@garo {\@andaith \@Ure :}\sinta@Omanfalse
\else \b@per@Oman #1#2#3>\@Ure \w@tehta
\fi }
\def \b@per@Oman #1#2#3>#4#5{%
\ifsinta@Oman \@garo {#5#2:}\sinta@Omanfalse
\else
\ifx #2:\else \@teithov #1#2#3>\fi
\@garo {:#4:}\sinta@Omantrue
\fi}
\def \b@per@Oman #1#2#3>#4#5{%
\ifx #2#4\@garo {\@andaith #4:}\sinta@Omanfalse
\else \ifsinta@Oman \@garo {#5#2:}\sinta@Omanfalse
\else
\ifx #2:\else \@teithov #1#2#3>\fi
\@garo {:#4:}\sinta@Omantrue
\fi\fi}
\def \A@b #1>{\b@anda@Oman #1>\a@tengwa }
\def \E@b #1>{\b@anda@Oman #1>\@yanta}
\def \I@b #1>{\b@anda@Oman #1>\sinta@kolindo }
\def \O@b #1>{\b@anda@Oman #1>\o@tengwa }
\def \U@b #1>{\b@anda@Oman #1>\@Ure }
\def \Y@b #1>{\b@anda@Oman #1>\y@tengwa }
\def \b@anda@Oman #1#2#3>#4{%
\ifx #2:\else \@teithov #1#2#3>\fi
\@garo {\@andaith #4:}\sinta@Omanfalse }
\def \f@b #1>{\b@surya #1>\@formen D}
\def \l@b #1>{\b@surya #1>\@lambe L}
\def \r@b #1>{\b@surya #1>\@rOmen T}
\def \R@b #1>{\if@ninOre \b@surya #1>\@rOmen T\else \b@surya #1>\@Ore T\fi}
\def \v@b #1>{\b@surya #1>\@ampa D}
\def \b@surya #1#2#3>#4#5{%
\ifx #2#4\@garo {#1#2#5}%
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:#4:}%
\fi \sinta@Omanfalse }
\def \s@b #1#2#3>{%
\ifx #2\@silme \@garo {:\@esse :}%
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:\@silme :}%
\fi \sinta@Omanfalse }
\def \c@b #1>{\b@punta #1>\c@sind \n@sind \arka@ama@falma T}
\def \b@b #1>{\b@punta #1>\@umbar \m@sind \landa@ama@falma D}
\def \d@b #1>{\b@punta #1>\@ando \n@sind \landa@ama@falma D}
\def \g@b #1>{\b@punta #1>\g@sind \n@sind \landa@ama@falma D}
\def \j@b #1>{\b@punta #1>\@anca \n@sind \landa@ama@falma D}
\def \k@b #1>{\b@punta #1>\k@sind \n@sind \arka@ama@falma T}
\def \p@b #1>{\b@punta #1>\@parma \m@sind \arka@ama@falma T}
\def \t@b #1>{\b@punta #1>\@tinco \n@sind \arka@ama@falma T}
\def \b@punta #1#2#3>#4#5#6#7{%
\ifx #2#4\@garo {#1#2#7}%
\else \ifx #2#5\@garo {#6#4:}%
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:#4:}%
\fi\fi \sinta@Omanfalse }
\def \m@b #1>{\b@nengwea #1>\m@sind \@malta \landa@ama@falma }
\def \n@b #1>{\b@nengwea #1>\n@sind \@nUmen \arka@ama@falma }
\def \b@nengwea #1#2#3>#4#5#6{%
\ifx #2#4%
\if@ninOre \@garo {:#5:}\else \@garo {#6#2:}\fi
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:#4:}%
\fi \sinta@Omanfalse }
\def \N@b #1#2#3>{%
\ifx #2\N@sind
\@garo {\landa@ama@falma \N@sind :}%
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:\N@sind :}%
\fi \sinta@Omanfalse }
\def \h@b #1#2#3>{%
\ifx #2\@tinco \@garo {#1\@TUle :}%
\else \ifx #2\@ando \@garo {#1\@anto :}%
\else \ifx #2\@parma \@garo {#1\@phormen :}%
\else \ifx #2\@umbar \@garo {#1\@ampa :}%
\else \ifx #2\m@sind \@garo {\landa@ama@falma \@ampa :}%
\else \ifx #2\c@sind \@garo {#1\ch@sind :}%
\else \ifx #2\g@sind \@garo {#1\gh@sind :}%
\else \ifx #2\@lambe \@garo {#1\@alda :}%
\else \ifx #2\@rOmen \@garo {#1\@arda :}%
\else \ifx #2\@silme \@garo {#1\@Harma :}%
\else \ifx #2\@esse \@garo {#1\@anca :}%
\else
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:\@hyarmen :}%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \sinta@Omanfalse }
\def \H@b #1#2#3>{%
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:\@hyarmen :}%
\sinta@Omanfalse }
\def \w@b #1#2#3>{%
\ifx #2\@hyarmen \@garo {:\@hwesta@sindarinwa :}%
\else
\ifx #2:\@garo {:\@wilya :}%
\else \ifx #1:\@garo {\w@tehta #2:}%
\else \@teitho #1#2#3>\@garo {:\@wilya :}%
\fi\fi
\fi \sinta@Omanfalse }
\def \z@b #1#2#3>{%
\ifx #2:\else \@teitho #1#2#3>\fi
\@garo {:\@esse :}%
\sinta@Omanfalse }
%%%%%%%%%%%%%%%%%%%%%% ignore all other letters %%%%%%%%%%%%%%%%%%%%%%
\@tfor\ch@r:={BCDFJKLMPQTVWXYZj}\do{%
\expandafter \def \csname \ch@r @q\endcsname #1#2#3#4>{}}
\@tfor\ch@r:={BCDFGJKLMPQSTVWXZqx}\do{%
\expandafter \def \csname \ch@r @s\endcsname #1#2#3#4>{}%
\expandafter \def \csname \ch@r @b\endcsname #1#2#3#4>{}}